.Net Core C# 創建物件、 更新 DbContext、DbSet

 1: 建立實體類

為Oracle的資料庫表APS_C_SRC_REPLY建立一個對應的實體類。

如以下的程式

public class ApsCSrcReply

{

    public string Site { get; set; }= string.Empty;  // 避免 Null 警告

    public string CustomerName { get; set; }= string.Empty;  // 避免 Null 警告

    public DateTime DemandDate { get; set; }

    public decimal DemandQty { get; set; }

}

2: 更新 DbContext

將此實體類別加入到你的DbContext:

public class ApplicationDbContext : DbContext

{

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)

    {

    }

    public DbSet<ApsCSrcReply> ApsCSrcReplies { get; set; }

}

3: 新增資料庫配置和連接字串

在appsettings.json中加入正確的連接字串,確保指向Oracle資料庫:

{

  "ConnectionStrings": {

    "OracleDB": "User Id=your_user_id;Password=your_password;Data Source=your_data_source;"

  }

}

1.檢查連接字串:

  • 如果使用 TNS 名稱,Data Source 應該是 tnsnames.ora 檔案中定義的一個條目名稱。
  • 如果使用 EZConnect(沒有使用 TNS 名稱的直接連線),格式應該是 [//]host[:port][/service_name]。

2.檢查 TNS 配置:
  • 確保 tnsnames.ora 檔案(如果你使用的是 TNS 名稱)正確配置,並且位於 Oracle 用戶端能夠存取的位置。這個檔案通常在 Oracle 安裝目錄的 network/admin 子目錄下。
3.Oracle 環境變數:
  • 確保 TNS_ADMIN 環境變數設定正確,指向包含 tnsnames.ora 檔案的目錄。
  • 檢查 ORACLE_HOME 環境變數是否正確設置,指向Oracle 用戶端或伺服器安裝目錄。
4.使用 EZConnect:
  • 如果決定使用 EZConnect,請確保連接字串格式正確,例如:Data Source=192.168.1.1:1521/orcl;
5.檢查網路問題:
  • 確保網路沒有問題,應用程式伺服器可以存取資料庫伺服器。

在Program.cs或Startup.cs中設定DbContext使用Oracle資料庫:

builder.Services.AddDbContext<ApplicationDbContext>(options =>

    options.UseOracle(builder.Configuration.GetConnectionString("OracleDB")));



4: 建立一個測試API或方法來讀取數據

在Program.cs中加入一個簡單的API,用於讀取並傳回所有記錄:

app.MapGet("/api/apscreplies", async (ApplicationDbContext context) =>

{

    return await context.ApsCSrcReplies.ToListAsync();

});



5: 運行和測試

執行應用程序,使用Postman或瀏覽器存取http://localhost:5000/api/apscreplies來看是否能成功返回資料庫中的資料。




DbSet 的作用和功能

這裡的 ApsCSrcReplies 屬性有以下作用:

  1. 查詢數據

    • 可以使用 LINQ 查詢來取得 APS_C_SRC_REPLY 表中的資料。例如,context.ApsCSrcReplies.Where(x => x.Site == "SomeSite") 會產生 SQL 查詢來取得 Site 列為 "SomeSite" 的所有行。
  2. 新增數據

    • 可以透過建立 ApsCSrcReply 的新實例並將其新增至 ApsCSrcReplies 來插入新行。例如,context.ApsCSrcReplies.Add(newApsCSrcReply)。
  3. 更新數據

    • 修改 ApsCSrcReply 實例的屬性並呼叫 context.SaveChanges() 會更新資料庫中對應的行。
  4. 刪除數據

    • 從 ApsCSrcReplies 移除一個實例並呼叫 context.SaveChanges() 會從資料庫中刪除對應的行。



配置DbContext

確保 ApplicationDbContext 類別已正確配置,以包含 APS_C_SRC_REPLY 表的對應。如果表名在資料庫中與類別名稱不完全相同,或希望明確指定表名和模式,可以在 OnModelCreating 方法中使用 Fluent API 進行配置:

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

               modelBuilder.Entity<APSZPLAN>(entity =>

            {

                entity.ToTable("APS_Z_PLAN");

                // 設定複合主鍵

                entity.HasKey(e => new { e.APS_PLAN_NO, e.APS_PLAN_SEQ,e.PROCESS_NAME });

            });

}










留言

這個網誌中的熱門文章

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題

🛠【實戰排除教學】從 VS Code 的 _logger 錯誤,到 PowerShell 找不到 npm/serve,再到 Oracle ORA-03135 連線中斷——一次搞懂!

🔎如何在 Oracle PL/SQL 儲存過程中為文字欄位加入換行符號(CHR(10))——以 Updlcmremark 為例